From 76f3866bd35b29edec770e107d8e2bb44fbd5ec9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Wilmet?= Date: Tue, 15 Jul 2014 15:24:36 +0200 Subject: [PATCH] textiter: make the FindLogAttrFunc functions clearer - Return true (found) and false (not found) explicitly. - Set found_offset only when something has been found. find_backward_cursor_pos_func() was a bit different, the while loop had the condition "offset > 0" but the return was "offset >= 0". Probably a micro-optimization, since offset == 0 is always a cursor position. Anyway now the code is the same as the other functions. https://bugzilla.gnome.org/show_bug.cgi?id=618852 --- gtk/gtktextiter.c | 84 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 60 insertions(+), 24 deletions(-) diff --git a/gtk/gtktextiter.c b/gtk/gtktextiter.c index 93cc801b15..bfc296eb86 100644 --- a/gtk/gtktextiter.c +++ b/gtk/gtktextiter.c @@ -2895,12 +2895,18 @@ find_word_end_func (const PangoLogAttr *attrs, ++offset; /* Find end of next word */ - while (offset < len && !attrs[offset].is_word_end) - ++offset; + while (offset < len) + { + if (attrs[offset].is_word_end) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + ++offset; + } - return offset < len; + return FALSE; } static gboolean @@ -2923,12 +2929,18 @@ find_word_start_func (const PangoLogAttr *attrs, --offset; /* Find start of prev word */ - while (offset >= 0 && !attrs[offset].is_word_start) - --offset; + while (offset >= 0) + { + if (attrs[offset].is_word_start) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + --offset; + } - return offset >= 0; + return FALSE; } static gboolean @@ -2970,12 +2982,18 @@ find_sentence_end_func (const PangoLogAttr *attrs, ++offset; /* Find end of next sentence */ - while (offset < len && !attrs[offset].is_sentence_end) - ++offset; + while (offset < len) + { + if (attrs[offset].is_sentence_end) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + ++offset; + } - return offset < len; + return FALSE; } static gboolean @@ -2998,12 +3016,18 @@ find_sentence_start_func (const PangoLogAttr *attrs, --offset; /* Find start of prev sentence */ - while (offset >= 0 && !attrs[offset].is_sentence_start) - --offset; + while (offset >= 0) + { + if (attrs[offset].is_sentence_start) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + --offset; + } - return offset >= 0; + return FALSE; } static gboolean @@ -3556,12 +3580,18 @@ find_forward_cursor_pos_func (const PangoLogAttr *attrs, if (!already_moved_initially) ++offset; - while (offset < len && !attrs[offset].is_cursor_position) - ++offset; + while (offset < len) + { + if (attrs[offset].is_cursor_position) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + ++offset; + } - return offset < len; + return FALSE; } static gboolean @@ -3574,12 +3604,18 @@ find_backward_cursor_pos_func (const PangoLogAttr *attrs, if (!already_moved_initially) --offset; - while (offset > 0 && !attrs[offset].is_cursor_position) - --offset; + while (offset >= 0) + { + if (attrs[offset].is_cursor_position) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + --offset; + } - return offset >= 0; + return FALSE; } static gboolean -- 2.30.2